home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 2000 January / Macworld (2000-01).dmg / Updaters / DirXtra HTML204 / xtradoc.dir / 00023_Script_HTML-Xtra Scripts < prev    next >
Text File  |  1999-02-22  |  10KB  |  338 lines

  1. -- HTML-XTRA Scripts
  2. --
  3. -- These handlers show some examples, how to include #html members into
  4. -- Your project and how to take care of it
  5. --
  6. -- (c) 1998-1999, Stefan Schmidt-Bilkenroth (ssb) / Media Connect
  7. -- 
  8.  
  9. --------------------------------------------------------------------------------
  10. --
  11. -- htmlregister
  12. --
  13. -- This handler calls the registration method
  14. --
  15. --------------------------------------------------------------------------------
  16.  
  17. on htmlregister mem
  18.   -- Register the xtra once, before it appears on the stage
  19.   -- to avoid "unregistered" messages
  20.   -- enter Your registration code here and un-comment
  21.   -- Register( member mem, string( 1234 ))
  22. end
  23.  
  24.  
  25. --------------------------------------------------------------------------------
  26. --
  27. -- htmlstartmovie
  28. --
  29. -- This handler should be called from Your startmovie script
  30. --
  31. --------------------------------------------------------------------------------
  32.  
  33. on htmlstartmovie
  34.   -- declare the globals
  35.   global ghtmlnormfont, ghtmlheadfont, ghtmlttfont, ghtmlfontsize, ghtmlpath, glasturl
  36.   global ghtmllinkred, ghtmllinkgreen, ghtmllinkblue, ghtmlsmoothness, ghtmlmargin
  37.   global gmac, gsep
  38.   
  39.   -- perform the registration
  40.   htmlregister ("html")
  41.   
  42.   -- setup of initial values, be aware of crossplatform playback!!
  43.   if gmac then -- we are on macos platform
  44.     set ghtmlnormfont = "Times" -- my default font for normal text
  45.     set ghtmlttfont = "Courier" -- my default font for teletype text
  46.     set ghtmlheadfont = "Helvetica"  -- my default font for header text
  47.     set ghtmlfontsize = 9 -- my base for the fontsize calculations
  48.     set ghtmlpath = the moviepath -- the directory of the html files
  49.   else
  50.     set ghtmlnormfont = "Times Roman" -- my default font for normal text
  51.     set ghtmlttfont = "Courier New" -- my default font for teletype text
  52.     set ghtmlheadfont = "Arial"  -- my default font for header text
  53.     set ghtmlfontsize = 11 -- my base for the fontsize calculations
  54.     set ghtmlpath = the moviepath -- the directory of the html files
  55.   end if
  56.   
  57.   -- setup the default link color, default is red
  58.   set ghtmllinkred = 255
  59.   set ghtmllinkgreen = 0
  60.   set ghtmllinkblue = 0
  61.   
  62.   -- setup default values for margin and smoothness
  63.   set ghtmlsmoothness = 0
  64.   set ghtmlmargin = 5
  65.   
  66.   -- tell the cast member
  67.   htmlsetdefaults "html"
  68. end
  69.  
  70.  
  71. --------------------------------------------------------------------------------
  72. --
  73. -- htmlsetdefaults
  74. --
  75. -- Setup the font defaults and link color
  76. --
  77. --------------------------------------------------------------------------------
  78.  
  79. on htmlsetdefaults mem
  80.   -- declare globals
  81.   global ghtmlnormfont, ghtmlheadfont, ghtmlttfont, ghtmlfontsize
  82.   global ghtmllinkred, ghtmllinkgreen, ghtmllinkblue, ghtmlsmoothness, ghtmlmargin
  83.   
  84.   -- setup the default fonts for the text parts
  85.   repeat with i = 1 to 7
  86.     setdefault( member mem, "NORM"&string(i), ghtmlnormfont, ghtmlfontsize+i )
  87.     setdefault( member mem, "TT"&string(i), ghtmlttfont, ghtmlfontsize+i )
  88.     if i < 7 then -- only 6 HEAD tags available
  89.       setdefault( member mem, "HEAD"&string(i), ghtmlheadfont, ghtmlfontsize+20-(3*i) )
  90.     end if
  91.   end repeat
  92.   
  93.   -- setup the link color
  94.   setlinkcolor( member mem, ghtmllinkred, ghtmllinkgreen, ghtmllinkblue )
  95.   
  96.   -- setup smoothness and margin
  97.   set the scrollsmooth of member mem = ghtmlsmoothness
  98.   set the margin of member mem = ghtmlmargin
  99. end
  100.  
  101.  
  102. --------------------------------------------------------------------------------
  103. --
  104. -- htmlredraw
  105. --
  106. -- Force the cast member to redraw its content
  107. --
  108. --------------------------------------------------------------------------------
  109.  
  110. on htmlredraw mem
  111.   -- just a siple hack
  112.   set the html of member mem = the html of member mem
  113. end
  114.  
  115.  
  116. --------------------------------------------------------------------------------
  117. --
  118. -- htmlclear
  119. --
  120. -- Clears the content of the cast member
  121. --
  122. --------------------------------------------------------------------------------
  123.  
  124. on htmlclear mem
  125.   -- simply erase the html of the cast member
  126.   set the html of member mem = empty
  127. end
  128.  
  129.  
  130. --------------------------------------------------------------------------------
  131. --
  132. -- htmlload
  133. --
  134. -- Low level load handler, that uses FileIO to import the html source
  135. --
  136. --------------------------------------------------------------------------------
  137.  
  138. on htmlload mem, file
  139.   -- show "Watch" cursor
  140.   cursor 4
  141.   
  142.   -- open FileIO
  143.   set myfile = new( xtra "FileIO" )
  144.   
  145.   -- open the file
  146.   openfile( myfile, file, 1 )
  147.   
  148.   -- error handling
  149.   if (status(myfile)) then 
  150.     set source = "<HTML><BODY><P><B>Error opening file:</B><BR>"&file&"<BR><A HREF=" "e&"index.htm" "e&">return to Table of contents.</A></P></BODY></HTML>"
  151.   else
  152.     -- read in the file
  153.     set source = readfile( myfile )
  154.     
  155.     -- error handling
  156.     if (status(myfile)) then
  157.       alert "Error while reading from file:"&return&file
  158.       set source = empty
  159.     end if
  160.     
  161.     -- close the file
  162.     closefile( myfile ) -- close the file
  163.   end if
  164.   
  165.   -- clear the instance of FileIO
  166.   set myfile = void -- Free the FileIO instance
  167.   
  168.   -- set the content of the cast member
  169.   set the html of member mem = source
  170.   
  171.   -- Free the space occupied by html source
  172.   set source = void
  173.   
  174.   -- switch back to "mouse" cursor
  175.   cursor -1
  176. end
  177.  
  178.  
  179. --------------------------------------------------------------------------------
  180. --
  181. -- htmldolinkabs
  182. --
  183. -- Follow an absolute link
  184. -- the link contains the complete pathname, based on ghtmlpath
  185. --
  186. --------------------------------------------------------------------------------
  187.  
  188. on htmldolinkabs mem, url
  189.   -- declare globals
  190.   global glasturl, ghtmlpath
  191.   
  192.   -- save the url for use with relative links
  193.   set glasturl = url
  194.   
  195.   -- get the complete OS specific path of the link file
  196.   set path = ghtmlpath & url2path( glasturl )
  197.   
  198.   -- load it
  199.   htmlload mem, ghtmlpath & url2path( glasturl )
  200. end
  201.  
  202.  
  203. --------------------------------------------------------------------------------
  204. --
  205. -- htmldolinkrel
  206. --
  207. -- Follow an relative link
  208. -- resolves the relative link to an absolute link
  209. -- and then calls htmldolinkabs
  210. --
  211. --------------------------------------------------------------------------------
  212.  
  213. on htmldolinkrel mem, url
  214.   --declare globals
  215.   global glasturl, gmac, gsep
  216.   
  217.   -- get the absolute path from the relative link
  218.   set url = concaturl( glasturl, url )
  219.   
  220.   -- just do the absolute link
  221.   htmldolinkabs mem, url
  222. end
  223.  
  224.  
  225. --------------------------------------------------------------------------------
  226. --
  227. -- htmlgetmeta
  228. --
  229. -- A simple sample handler that shows an example, how to retrieve the
  230. -- contents of the <META ...> tags.
  231. --
  232. --------------------------------------------------------------------------------
  233.  
  234. on htmlgetmeta
  235.   global metalist
  236.   set metalist = []
  237.   set metalist = the metalist of member "html"
  238.   set metacount = count(metalist)
  239.   set str = empty
  240.   if metacount then
  241.     repeat with i = 1 to metacount
  242.       if i > 1 then set str = str & return
  243.       set str = str & char 1 to i of "        " & getat(getat(metalist,i),1) & " ("&getat(getat(metalist,i),2)&")"
  244.     end repeat
  245.   end if
  246.   set the text of field "meta" = str
  247. end
  248.  
  249. --==============================================================================
  250. --
  251. -- Auxilary Handlers
  252. --
  253. --==============================================================================
  254.  
  255. --------------------------------------------------------------------------------
  256. --
  257. -- Url2Path
  258. --
  259. -- This handler converts the url string to a valid pathname
  260. --
  261. --------------------------------------------------------------------------------
  262.  
  263. on URL2Path url
  264.   global gmac, gsep
  265.   set path = empty
  266.   set olddel = the itemdelimiter
  267.   set the itemdelimiter = "/"
  268.   set cnt = the number of items of url
  269.   repeat with i = 1 to cnt
  270.     if i > 1 then set path = path & gsep
  271.     set path = path & item i of url
  272.   end repeat
  273.   set the itemdelimiter = olddel
  274.   return path
  275. end
  276.  
  277.  
  278. --------------------------------------------------------------------------------
  279. --
  280. -- ConcatURL
  281. --
  282. -- This handler returns the destination file path, when you pass the actual
  283. -- file URL and the relative link URL. This handler checks for "UpDirectory"
  284. -- links ("..")
  285. --
  286. --------------------------------------------------------------------------------
  287.  
  288. on ConcatURL base,link
  289.   global gsep
  290.   set baselist = []
  291.   set linklist = []
  292.   set url = empty
  293.   set olddel = the itemdelimiter
  294.   set the itemdelimiter = "/"
  295.   -- convert url to lists
  296.   set basecnt = the number of items of base
  297.   repeat with i = 1 to basecnt
  298.     add( baselist, item i of base )
  299.   end repeat
  300.   set linkcnt = the number of items of link
  301.   repeat with i = 1 to linkcnt
  302.     add( linklist, item i of link )
  303.   end repeat
  304.   -- strip last (filename) of base to get path
  305.   deleteat( baselist, basecnt )
  306.   set basecnt = count( baselist )
  307.   -- do the .. up directory
  308.   repeat while getat( linklist, 1 ) = ".."
  309.     deleteat( baselist, basecnt )
  310.     set basecnt = count( baselist )
  311.   end repeat
  312.   set linkcnt = count( linklist )
  313.   repeat with i = 1 to linkcnt
  314.     addat( baselist, count( baselist )+1, getat( linklist, i ))
  315.   end repeat
  316.   set basecnt = count ( baselist )
  317.   repeat with i = 1 to basecnt
  318.     if i > 1 then set url = url & the itemdelimiter
  319.     set url = url & getat( baselist, i )
  320.   end repeat
  321.   set the itemdelimiter = olddel
  322.   return url
  323. end
  324.  
  325. on convertpc2url str
  326.   set olddel = the itemdelimiter
  327.   set the itemdelimiter = "\"
  328.   set anz = the number of items of str
  329.   set res = empty
  330.   repeat with i = 2 to anz
  331.     if i > 2 then set res = res & "/"
  332.     set res = res & item i of str
  333.   end repeat
  334.   set the itemdelimiter = olddel
  335.   return res
  336. end
  337.  
  338.